import { reqUserLogin ,reqUserLogout} from "@/api";
import { Message } from 'element-ui';

const state = {
  // userInfo:{}
  userInfo: {
    // 即使你刷新了页面，或是重新启动了项目 仍然可以从本地存储当中获取对应的值
    name: localStorage.getItem('name'),
    token: localStorage.getItem('token')
  }
}
const actions = {
  async userLogin({commit},user) {
    const res = await reqUserLogin(user)
    if (res.code === 200) {
      Message.success('登陆成功了...')
      // console.log('login',res)
      commit('SAVE_USER_INFO', res.data)
      
      // 在本地存储当中也在先存储一份
      localStorage.setItem('name', res.data.name)
      localStorage.setItem('token',res.data.token)
    }else{
      // 登陆失败之后，要返回一个失败的Promise实例对象 以便于后续来使用
      return Promise.reject(res.message)
    }
  },

  // 用户退出
  async userLogout({commit}) {
    const res = await reqUserLogout()
    if (res.code === 200) {
      Message.success('退出成功了...')
      // 退出成功后，要清空本地存储的内容
      localStorage.removeItem('name')
      localStorage.removeItem('token')

      // 将vuex中的数据删除掉  不需要传递参数
      commit('REMOVE_USER_INFO')
    }else {           // TODO:必须加上这一步  不可忽略
      return Promise.reject('失败了...')
    }
  }
}
const mutations = {
  SAVE_USER_INFO(state,userInfo) {
    state.userInfo = userInfo
  },
  REMOVE_USER_INFO(state) {
    state.userInfo = {name:'',token:''}
  }
}
const getters = {}

export default {
  namespaced: true, // 开启命名空间
  state,
  actions,
  mutations,
  getters
}